'''

shutil 模块提供了许多函数来操作文件和文件夹。
shutil 模块是 os 模块的补充，提供了更多的功能。
shutil.copy(src, dst) 复制文件
shutil.copytree(src, dst) 复制文件夹
shutil.move(src, dst) 移动文件或文件夹
shutil.rmtree(path) 删除文件夹
shutil.make_archive(base_name, format, root_dir) 压缩文件夹
shutil.unpack_archive(filename, extract_dir) 解压文件夹
shutil.disk_usage(path) 获取磁盘使用情况
shutil.get_terminal_size(fallback=(columns, lines, width, height)) 获取终端大小
shutil.get_size(path) 获取文件大小
shutil.get_m_usage(path) 获取文件大小
shutil.get_m_usage(path) 获取文件大小

'''
import os
import shutil


curFilePath = os.path.dirname(os.path.abspath(__file__))
print(curFilePath)
print('1-----------------------------------------------------')
# 1. 复制文件
# shutil.copy('test[1].txt', 'test2.txt')
# 2. 复制文件夹
# shutil.copytree('tmp2', 'tmp3') # 文件夹存在会报错
# shutil.copytree('tmp2', 'tmp4',dirs_exist_ok=True) # 文件夹存在不会报错，注意要带上dirs_exist_ok=True参数
# 3. 移动文件或文件夹
# shutil.move('tmp4', 'tmp5') # 文件夹存在会报错
# 4. 删除文件夹
# shutil.rmtree('tmp5') # 文件夹不存在会报错
print('5-------------------------------------------------------')
# 5. 压缩文件夹
# shutil.make_archive('aaa', 'zip', curFilePath) # 文件夹存在会报错
print('6-------------------------------------------------------')
# 6. 解压文件夹
# zipfile = os.path.join(curFilePath, 'aaa.zip')
# print(zipfile)
# unzipfile = os.path.join(curFilePath, 'bbb')
# print(unzipfile)
# shutil.unpack_archive(zipfile, unzipfile)
print('7-------------------------------------------------------')
# 7. 获取磁盘使用情况
print(shutil.disk_usage('C:\\'))
print('8-------------------------------------------------------')
# 8. 获取终端大小
print(shutil.get_terminal_size(fallback=(80, 24)))
print('9-------------------------------------------------------')


'''
`shutil.rmtree()` 是Python的`shutil`模块中的一个函数，用于删除整个目录树。

以下是`shutil.rmtree()`函数的语法：
```python
shutil.rmtree(path, ignore_errors=False, onerror=None)
```
参数：

*   `path`: 要删除的目录路径。
*   `ignore_errors`: 如果为`True`，则忽略删除过程中的错误。如果为`False`（默认值），则在删除过程中遇到错误时抛出异常。
*   `onerror`: 一个可选的函数，用于处理删除过程中的错误。如果指定了该函数，则在删除过程中遇到错误时调用该函数。

示例：
```python
import shutil

# 删除整个目录树
shutil.rmtree('/path/to/directory')
```
注意：使用`shutil.rmtree()`函数时要小心，因为它会永久性地删除整个目录树。如果要删除的目录中包含重要文件，请确保备份文件或使用其他删除方法。

另外，`shutil.rmtree()`函数会抛出以下异常：

*   `FileNotFoundError`: 如果指定的目录不存在。
*   `PermissionError`: 如果没有权限删除指定的目录。
*   `OSError`: 如果删除过程中遇到其他错误。

因此，在使用`shutil.rmtree()`函数时，应考虑捕获这些异常并进行适当的处理。


'''